﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSharp_Class_and_object

/*类只是规定了，它能储存什么类型的数据，能够完成什么任务，但是没有具体的数据
类本身也是一种数据类型(自己定义的数据类型)
*/

{
    /// <summary>
    /// 设备类
    /// </summary>
    public class Equipment2
    {
        //public int EquipID { get; set; } // 设备id
        private int _equipId = 0;
        public int EquipID
        {
            get
            {
                return _equipId;
            }
            set
            {
                if (value < 100)
                    _equipId = 1000;
                else
                _equipId = value;
            }
        }
        //public string EquipName { get; set; } //设备名称
        private string _equipName = string.Empty;
        public string EquipName
        {
            get { return _equipName; }
            set { _equipName = value; }
        }
        //public double Pressure { get; set; } //压力
        public Double Pressure //只读属性：没有对于私有字段的属性
        {
            get
            {
                double result = 2.5;
                return result;
            }
        }
        //public DateTime CollectionTime { get; set; } //采集时间
        public DateTime CollectionTime
        {
            get
            {
                return DateTime.Now;
            }
        } //采集时间
/*
        [1]增加业务判断逻辑
        [2]设置只读字段功能
        [3]设置只读业务逻辑(可以没有私有字段)*/


        /// <summary>
        ///     显示设备的信息
        /// </summary>
        public void ShowInfo()
        {
            Console.WriteLine($"设备ID：{EquipID} 设备名称：{EquipName} 压力：{Pressure}");
        }

       /* 属性和字段对比：
        【1】字段，又称为“成员变量”
        第一：目的：字段为类的内部方法，或者方法之间传递数据使用，强调对内使用
        第二：修饰：字段用private修饰，很少用public
        第三：读写：字段可以读写均可，也可以用readonly限制为只读，但是不能添加业务

        【2】属性
        第一：目的：属性是对外提供数据访问、本身不保存数据，前调对外使用
        第二：修饰：属性都是public，从来不用private
        第三：读写：属性可以轻松的实现单独读写控制，并且可以添加任意需要的业务逻辑
        第四：强调：dgv列表必须强制使用属性，不能使用公有字段*/

        //总结：开发中，只要对外使用数据，都用属性，即使没有任何扩展业务，也不建议使用public类型的字段（强烈建议）
    }
}
